var $table = $('#addTo-index-goods');
// $table=$("#manage-index-goods");

//当前产品线
var selectedGroupType;

//当前分组id
var indexGroupId;

//操作选项 0 添加商品到当前分组 1 管理当前分组已有商品，默认为0
var optValue=0;

//一级分组列表，渲染select中的optgroup
var firstGroupArr = [];
//二级分组,渲染select中的option
var secondGroupArr = [];

$(function () {

    selectedGroupType = $("#groupType").val();

    optValue = $("#optType").val();
    //获取一二级分组（分开）,回调里赋值firstGroupArr和secondGroupArr,并生成option
    executeGetFirstSecGroup(selectedGroupType);
    //创建待分组商品列表
    initUngroupedTable();


});

//更换产品线
$("#groupType").on("change", function () {
    selectedGroupType = $("#groupType").val();
    //一级分组列表
    firstGroupArr = [];
    //二级分组
    secondGroupArr = [];
    $("#curGroup").html("");
    //获取一二级分组（分开）
    executeGetFirstSecGroup(selectedGroupType);
    // 先销毁原table
    $table.bootstrapTable("destroy");
    //创建更改产品线后的待分组商品列表
    initUngroupedTable();
});

//操作切换
$("#optType").on("change", function () {
    //防止载入on事件报错
    indexGroupId = $("#curGroup").val();
    if (indexGroupId == null || indexGroupId == undefined || indexGroupId == "") {
        alert("请先选择分组");
    }
    //获取操作选项 0 添加商品到当前分组 1 管理当前分组已有商品，默认为0
    optValue = $("#optType").val();

    // 先销毁原table
    $table.bootstrapTable("destroy");
    if (optValue == 0) {
        $("#tbTitle").text("尚未分组商品列表");
        //转到给分组添加商品
        gotoAddToGroup();
    }
    if (optValue == 1) {
        $("#tbTitle").text("当前分组已有商品列表");

        //转到管理当前分组的商品
        gotoManageGroupGoods();
    }
});

//分组改变，在管理分组商品时刷新列表
$("#curGroup").change(function () {
    optValue = $("#optType").val();
    if (optValue == 1) {
        // 先销毁原table
        $table.bootstrapTable("destroy");
        initGroupedTable();
    }
});

//转到给分组添加商品
function gotoAddToGroup() {
    //按钮切换到添加
    $("#btn-rmfromGroup").hide();
    $("#btn-addtoGroup").show();

    $table = $('#addTo-index-goods');
    initUngroupedTable();
}

//转到管理当前分组的商品
function gotoManageGroupGoods() {
    //按钮切换到移除
    $("#btn-rmfromGroup").show();
    $("#btn-addtoGroup").hide();

    $table = $("#manage-index-goods");
    initGroupedTable();
}

// 初始化当前产品线待分组商品bootstrap-table
function initUngroupedTable() {
    // 初始化bootstrap-table
    // var url = urlcore + "/api/goods/getNotGroupedGoodsList";
    var url = urlcore + "/api/goods/getNotGroupedGoods";
    var method="post";
    /*    var params = {
        "goods": {
            goodsType: selectedGroupType,
        },
        "page": {
            current: 1,
        }
    };*/
    //init table
    initGroupTable(method,url);

}

//初始化当前分组下的商品列表
function initGroupedTable() {
    // var url = urlcore + "/api/goods/getPublishedGoodsListByIndexGroupId";
    var url = urlcore + "/api/goods/getPubGoodsByIndexGroupId";
    var method="post";
    initGroupTable(method,url);
}

//列设置
var columns=[
    {
        checkbox: true,
    }, {
        title: "序号",
        align:"center",
        width:"50px",
        formatter: function (value, row, index) {
            return (index+1);
        }
    }, {
        field: "id",
        title: "商品ID",
        halign:"center",
        align:"center",
        width:"80px"
    }, {
        field: "goodsName",
        title: "商品名称",
        halign:"center",
        sortable: true
    }, {
        field: "goodsUrl",
        title: "商品图片",
        align: "center",
        width:"100px",
        formatter: function (value, row, index) {
            return '<img style="width: 50px;height: auto" src="' + value + '" >';
        }
    }, {
        title: "操作",
        halign: "center",
        sortable: true,
        align:"center",
        valign:"middle",
        width:"160px",
        formatter: function (value, row, index) {
            var optHtml = "";
            //获取当前操作选项 0 添加商品到当前分组 1 管理当前分组已有商品
            optValue = $("#optType").val();
            if (optValue == 0) {
                //单个添加到分组
                optHtml += "<a class=\"btn btn-primary btn-xs\" href=\"javascript:;\" onclick=\"addToGroup(" + row.id + ")\"> 添加</a>\n";
            }
            if (optValue == 1) {
                //单个移出分组
                optHtml += "<a class=\"btn btn-primary btn-xs\" href=\"javascript:;\" onclick=\"rmFromGroup(" + row.id + ")\"> 移除</a>\n";
            }
            return optHtml;
        }
    }];

//查询参数，包括分页参数和查询数据参数 ##！重要！##
var queryParams=function (params) {
    console.log("params:",params);
    optValue = $("#optType").val();
    //获取当前分组id
    indexGroupId = $("#curGroup").val();
    var param;
    if(optValue==0){
        param= {
            "goods": {
                goodsType: selectedGroupType,
            },
            "page": {
                offset: params.offset,
                current:params.offset/params.limit+1,//bootstrap-table分页参数offset从0开始，计算的后端当前页参数current=(offset/limit+1)，
                size:params.limit
            },
            searchText:params.search
        };
    }
    if (optValue == 1) {
        param= {
            "goods": {
                indexGroupId: indexGroupId
            },
            "page": {
                offset: params.offset,
                current:params.offset/params.limit+1,//bootstrap-table分页参数offset从0开始，计算的后端当前页参数current=(offset/limit+1)，
                size:params.limit
            },
            searchText:params.search
        };

    }
    return param;

}

//初始化表格，有管理已有商品和添加分组商品两类表格
function initGroupTable(method,url){
    $table.bootstrapTable({
        columns: columns,
        method: method,
        url: url,
        dataType: "json",
        queryParams: queryParams,
        //返回数据预处理
        responseHandler: function (cbdata) {
            console.log(cbdata);
            if (null != cbdata.data && null !=cbdata.data.records) {
                var records=cbdata.data.records;
                var res ={
                    //如果采用server端分页，必须有rows和total这两部分数据
                    "rows":records,
                    "total":cbdata.data.total
                };
                return res;
            }else return { "rows": [], "total": 0 };
        },
        cache: false,
        toolbar: '#addGroupToolbar',//工具栏
        pagination: true,//启用分页条
        sidePagination: "server",//分页方式client或server
        // pageNumber: 1,
        pageSize: 16,//每页大小
        pageList: [16, 32, 48, 64],//可以选择每页大小
        showRefresh: true,//显示刷新
        sortable: true,//是否启用排序
        clickToSelect: true,//设置true 将在点击行时，自动选择rediobox 和 checkbox
        search: true,//只是客户端搜索
        // searchText:"",//初始搜索文本
    });
}


//点击按钮添加到分组,根据参数中是否带入id区分是单个还是批量
function addToGroup(id) {
    var uptGoodsArr = [];
    //当前分组id
    indexGroupId = $("#curGroup").val();
    if(id!=undefined){
        //单个添加
        uptGoodsArr.push({
            id: id,
            indexGroupId: indexGroupId
        })
    }else{
        //批量
        var selection = $table.bootstrapTable('getSelections');
        //get selections arr
        console.log(selection);
        if (selection.length == 0) {
            alert("请先选择商品");
            return;
        }
        for (var item of selection) {
            uptGoodsArr.push({
                id: item.id,
                indexGroupId: indexGroupId
            })
        }
    }

    $.ajax({
        type: "POST",
        url: urlcore + "/api/goods/uptGoodsBatch",
        dataType: "json",
        contentType: "application/json;charset=UTF-8",
        data: JSON.stringify(uptGoodsArr),
        success: function (data) {
            alert("分组添加商品成功！");
            console.log("batchgoodsdata", data);
            $table.bootstrapTable('refresh');
        },
        error: function () {
            alert("添加失败");
        }
    });
    //refresh table
}

// 点击移除按钮移出分组
function rmFromGroup(id) {
    indexGroupId = $("#curGroup").val();
    if (indexGroupId == undefined || indexGroupId == "") {
        alert("请先选择分组");
        return;
    }
    var uptGoodsIdsArr = [];
    if(id!=undefined){
        //单个移除
        confirm("确认从本分组中移除吗，不会影响到商品状态",function (call_back) {
            if(call_back){
                uptGoodsIdsArr.push(id)
                insideFuncrmFromGroup();
            }
        });
    }else{
        //批量移除
        //get selections arr
        var selection = $table.bootstrapTable('getSelections');
        console.log(selection);
        if (selection.length == 0) {
            alert("请先选择商品");
            return;
        }
        confirm("确认从本分组中移除吗，不会影响到商品状态",function (call_back) {
            if(call_back){
                for (var item of selection) {
                    uptGoodsIdsArr.push(item.id)
                }
                insideFuncrmFromGroup();
            }
        });
    }
    //函数内移除函数
    function insideFuncrmFromGroup() {
        var rmObj = new Object();
        rmObj.groupId = indexGroupId;
        rmObj.ids = uptGoodsIdsArr;
        $.ajax({
            type: "POST",
            url: urlcore + "/api/goods/uptToNullGroup",
            dataType: "json",
            contentType: "application/json;charset=UTF-8",
            data: JSON.stringify(rmObj),
            success: function (data) {
                alert("分组移除商品成功！");
                console.log("rmbatchgoodsdata", data);
                $table.bootstrapTable('refresh');
            },
            error: function () {
                alert("失败");
            }
        });
    }


}


//获取一二级分组（分开）
function executeGetFirstSecGroup(selectedGroupType) {
    $.ajax({
        url: urlcore + "/api/indexGroup/getAllGroup",
        method: "get",
        dataType: "json",
        // async: false,//禁止异步
        contentType: "application/json;charset=UTF-8",
        data: {
            groupType: selectedGroupType,
        },
        success: function (cbdata) {
            console.log(cbdata.data);
            firstGroupArr = cbdata.data.firstGroupList;
            secondGroupArr = cbdata.data.secondGroupList;
            //生成选择分组的optgroup
            generateOptgroupHtml(firstGroupArr, secondGroupArr);
        },
        error: function (data) {
            alert("获取分组失败");
        }
    });
}

//生成选择分组的optgroup
function generateOptgroupHtml(firstGroupArr, secondGroupArr) {

    var optgroupHtmlStr = "";
    //生成optgroup
    for (var item of firstGroupArr) {
        var htmlStr = getGroupOptionHtml(item, 0);
        optgroupHtmlStr += htmlStr;
    }
    $("#curGroup").append(optgroupHtmlStr);

    //生成optgroup的option
    for (var item of secondGroupArr) {
        var htmlStr = getGroupOptionHtml(item, 1);
        var parentId = item.pid;
        $("#curGroup").find('optgroup[data-id="' + parentId + '"]').append(htmlStr);
    }
}

//生成分组选择框的optgroup（tag为0）或option（tag为1）
function getGroupOptionHtml(item, tag) {
    var htmlStr = "";
    if (tag == 0) {
        htmlStr = "   <optgroup data-id=\"" + item.id + "\" label=\"" + item.title + "\">\n" +
            "    </optgroup>";
    }
    if (tag == 1) {
        htmlStr = "<option value=\"" + item.id + "\">" + item.title + "</option>";
    }
    return htmlStr;
}